.listingblock id=@id class=role
  - if title?
    .title=captioned_title
  .content
    - nowrap = !(@document.attr? :prewrap) || (option? 'nowrap')
    / implicit listing blocks and source blocks are rendered as code
    / explicit listing blocks stay listing
    - if @style == 'source' || (@style == 'listing' && !(attr? 1, 'listing'))
      - language = attr :language
      - code_class = language ? [language, "language-#{language}"] : nil
      - pre_class = ['highlight']
      - pre_lang = nil
      - case attr 'source-highlighter'
      - when 'coderay'
        - pre_class = ['CodeRay']
      - when 'pygments'
        - pre_class = ['pygments','highlight']
      - when 'prettify'
        - pre_class = ['prettyprint']
        - pre_class << 'linenums' if attr? :linenums
        - pre_class << language if language
        - pre_class << "language-#{language}" if language
        - code_class = nil
      - when 'html-pipeline'
        - pre_lang = language
        - pre_class = code_class = nil
        - nowrap = false
      /- when 'highlightjs', 'highlight.js'
      - pre_class << 'nowrap' if nowrap
      pre class=pre_class lang=pre_lang
        code class=code_class =content
    - else
      pre class=(nowrap ? 'nowrap' : nil) =content
